import axios from 'axios'
import { showToast } from 'vant'

// 创建axios实例
const api = axios.create({
  baseURL: '/v1/', // 使用相对路径，通过Vite代理转发
  timeout: 150000, // 增加到150秒，适应豆包API视频分析时间
  headers: {
    'content-type': 'application/json',
    'appkey': 'your appkey' // 与原生小程序保持一致
  }
})

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 添加token到请求头
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.authorization = `Bearer ${token}`
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    const { data } = response
    
    // 确保返回有效的数据
    if (data === undefined || data === null) {
      console.error('API响应数据为空:', response)
      return {
        success: false,
        message: '服务器返回数据为空'
      }
    }
    
    // 直接返回数据，让业务层处理具体的业务逻辑
    return data
  },
  (error) => {
    const { response } = error
    
    if (response) {
      const { status, data } = response
      
      switch (status) {
        case 401:
          // 未授权，跳转到登录页
          localStorage.removeItem('token')
          window.location.href = '/login'
          break
        case 403:
          showToast('权限不足')
          break
        case 404:
          showToast('资源不存在')
          break
        case 500:
          showToast('服务器错误')
          break
        default:
          showToast(data?.message || '网络错误')
      }
      
      // 返回错误响应而不是reject
      return {
        success: false,
        message: data?.message || '请求失败',
        error: error
      }
    } else {
      showToast('网络连接失败')
      
      // 返回网络错误响应
      return {
        success: false,
        message: '网络连接失败',
        error: error
      }
    }
  }
)

export default api 